﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using BolsaTalentos.BLL;

namespace InterfazBolsaTalentos.Egresado
{
    public partial class Perfil : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            this.PoblarCampos();
        }

        protected void Button_Modificar_Click(object sender, EventArgs e)
        {
            ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).AñosDeExperienciaLaboral = System.Convert.ToInt32(this.TextBox_ExpLaboral.Text.Trim());
            ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).DetalleExperienciaLaboral = this.TextBox_DetalleExperiencia.Text.Trim();
            ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).SiVehiculoPropio = this.CheckBox_TieneVehiculo.Checked;
            ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).SiBuscaTiempoCompleto = this.CheckBox_TiempoCompleto.Checked;
            ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).Intereses = this.TextBox_Intereses.Text.Trim();
            ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).Estado = this.DropDownList_Estado.SelectedValue;

            ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).Actualizar();

            this.Response.Redirect("Perfil.aspx");
        }
        protected void Button_AñadirHabilidad_Click(object sender, EventArgs e)
        {
            try
            {
                ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).AgregarHabilidad(Convert.ToInt32(this.DropDownList_Habilidades.SelectedValue));
                
                this.Response.Redirect("Perfil.aspx");
            }
            catch (Exception) 
            {
                this.Label_MensajeErrorHabilidadExistente.Text = "Ya usted tiene esta habilidad";
            }            
        }
        protected void Button_EliminarHabilidad_Click(object sender, EventArgs e)
        {
            try
            {
                ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).EliminarHabilidad(Convert.ToInt32(this.DropDownList_HabilidadesDeUsuario.SelectedValue));

                this.Response.Redirect("Perfil.aspx");
            }
            catch (Exception)
            {
                this.Label_MensajeErrorHabilidadEliminar.Text = "Intente eliminar esta habilidad luego";
            }
        }
        protected void Button_NuevaHabilidad_Click(object sender, EventArgs e)
        {
            try
            {
                new Habilidad(this.TextBox_NuevaHabilidad.Text.Trim()).Insertar();

                this.Response.Redirect("Perfil.aspx");
            }
            catch (Exception) 
            {
                this.Label_MensajeErrorNuevaHabilidad.Text = "No puede agregar esta habilidad";
            }
        }

        protected void Button_AñadirContacto_Click(object sender, EventArgs e)
        {
            try
            {
                ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).AgregarContacto(Convert.ToInt32(this.DropDownList_TiposContactos.SelectedValue), this.TextBox_NuevoContacto.Text.Trim());

                this.Response.Redirect("Perfil.aspx");
            }
            catch (Exception)
            {
                this.Label_MensajeErrorAñadirContacto.Text = "Este contacto ya ha sido registrado";
            }
        }
        protected void Button_EliminarContacto_Click(object sender, EventArgs e)
        {
            try
            {
                ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).EliminarContacto(Convert.ToInt32(this.DropDownList_ContactosDeUsuario.SelectedValue));

                this.Response.Redirect("Perfil.aspx");
            }
            catch (Exception)
            {
                this.Label_MensajeErrorEliminarContacto.Text = "Intente eliminar este contacto luego";
            }
        }

        protected void DropDownList_Habilidades_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.Label_MensajeErrorHabilidadExistente.Text = " ";
            this.Button_AñadirHabilidad.Enabled = true;

            if (this.DropDownList_Habilidades.SelectedValue == "0") 
            {
                this.Button_AñadirHabilidad.Enabled = false;
            }
        }
        protected void DropDownList_HabilidadesDeUsuario_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.Button_EliminarHabilidad.Enabled = true;

            if (this.DropDownList_HabilidadesDeUsuario.SelectedValue == "0")
            {
                this.Button_EliminarHabilidad.Enabled = false;
            }
        }
        protected void TextBox_NuevaHabilidad_TextChanged(object sender, EventArgs e)
        {
            this.Label_MensajeErrorNuevaHabilidad.Text = " ";

#warning Esto no funciona bien
            // A ver si a esto le da la gana de funcionar!
            if (this.Button_NuevaHabilidad.Text.Trim() != "")
            {
                this.Button_NuevaHabilidad.Enabled = true;
            }
            else
            {
                this.Button_NuevaHabilidad.Enabled = false;
            }            
        }
        protected void DropDownList_ContactosDeUsuario_SelectedIndexChanged(object sender, EventArgs e)
        {
            this.Button_EliminarContacto.Enabled = true;

            if (this.DropDownList_ContactosDeUsuario.SelectedValue == "0")
            {
                this.Button_EliminarContacto.Enabled = false;
            }
        }
        protected void DropDownList_TiposContactos_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (this.TextBox_NuevoContacto.Text.Trim() != "")
            {
                this.Button_AñadirContacto.Enabled = true;
            }
            if (this.DropDownList_TiposContactos.SelectedValue == "0")
            {
                this.Button_AñadirContacto.Enabled = false;
            }
        }
        protected void TextBox_NuevoContacto_TextChanged(object sender, EventArgs e)
        {
            if (this.DropDownList_TiposContactos.SelectedValue != "0")
            {
                this.Button_AñadirContacto.Enabled = true;
            }
            if (this.TextBox_NuevoContacto.Text.Trim() == "")
            {
                this.Button_AñadirContacto.Enabled = false;
            }
        }

        private void PoblarCampos()
        {
            // Poblar el viaje de campos
            this.TextBox_Nombre.Text = ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).NombreCompleto;
            this.TextBox_Carrera.Text = ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).Carrera.Descripcion;
            this.TextBox_Edad.Text = ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).Edad.ToString();

            if (((UsuarioEgresado)this.Session["UsuarioDeSesion"]).Sexo == "M")
                this.TextBox_Sexo.Text = "Masculino";
            if (((UsuarioEgresado)this.Session["UsuarioDeSesion"]).Sexo == "F")
                this.TextBox_Sexo.Text = "Femenino";

            if (!IsPostBack)
            {
                this.TextBox_ExpLaboral.Text = ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).AñosDeExperienciaLaboral.ToString();
                this.TextBox_DetalleExperiencia.Text = ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).DetalleExperienciaLaboral;
                this.CheckBox_TieneVehiculo.Checked = ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).SiVehiculoPropio;
                this.CheckBox_TiempoCompleto.Checked = ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).SiBuscaTiempoCompleto;
                this.TextBox_Intereses.Text = ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).Intereses;
                this.DropDownList_Estado.SelectedValue = ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).Estado;
            }

            // Poblar TextBox_Habilidades
            this.TextBox_Habilidades.Text = "";
            foreach (Habilidad item in ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).Habilidades)
            {
                this.TextBox_Habilidades.Text += item.Descripcion + "\n";
            }

            // Poblar DropDownList_HabilidadesDeUsuario
            //this.DropDownList_HabilidadesDeUsuario.Items.Clear();
            if (this.DropDownList_HabilidadesDeUsuario.Items.Count == 1)
            {
                foreach (Habilidad item in ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).Habilidades)
                {
                    this.DropDownList_HabilidadesDeUsuario.Items.Add(new ListItem(item.Descripcion, item.ID.ToString()));
                }
            }

            // Poblar TextBox_Contactos
            this.TextBox_Contactos.Text = "";
            foreach (Contacto item in ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).Contactos)
            {
                this.TextBox_Contactos.Text += item.TipoContacto + " -> " + item.Descripcion + "\n";
            }

            // Poblar DropDownList_ContactosDeUsuario
            if (this.DropDownList_ContactosDeUsuario.Items.Count == 1)
            {
                foreach (Contacto item in ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).Contactos)
                {
                    this.DropDownList_ContactosDeUsuario.Items.Add(new ListItem(item.Descripcion, item.ID.ToString()));
                }
            }            
        }

        protected void Button_LogOff_Click(object sender, EventArgs e)
        {
            this.Session["UsuarioDeSesion"] = null;

            this.Response.Redirect("../General/Default.aspx");
        }

        protected void Button_MostrarPanelDatosGenerales_Click(object sender, EventArgs e)
        {
            this.Panel_DatosGenerales.Visible = !(this.Panel_DatosGenerales.Visible);
        }
        protected void Button_MostrarPanelHabilidades_Click(object sender, EventArgs e)
        {
            this.Panel_Habilidades.Visible = !(this.Panel_Habilidades.Visible);
        }
        protected void Button_MostrarPanelContactos_Click(object sender, EventArgs e)
        {
            this.Panel_Contactos.Visible = !(this.Panel_Contactos.Visible);
        }

    }
}
